home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_coercion.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  5KB  |  180 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. import copy
  5. import sys
  6. import warnings
  7.  
  8. class CoerceNumber:
  9.     
  10.     def __init__(self, arg):
  11.         self.arg = arg
  12.  
  13.     
  14.     def __repr__(self):
  15.         return '<CoerceNumber %s>' % repr(self.arg)
  16.  
  17.     
  18.     def __coerce__(self, other):
  19.         if isinstance(other, CoerceNumber):
  20.             return (self.arg, other.arg)
  21.         else:
  22.             return (self.arg, other)
  23.  
  24.  
  25.  
  26. class MethodNumber:
  27.     
  28.     def __init__(self, arg):
  29.         self.arg = arg
  30.  
  31.     
  32.     def __repr__(self):
  33.         return '<MethodNumber %s>' % repr(self.arg)
  34.  
  35.     
  36.     def __add__(self, other):
  37.         return self.arg + other
  38.  
  39.     
  40.     def __radd__(self, other):
  41.         return other + self.arg
  42.  
  43.     
  44.     def __sub__(self, other):
  45.         return self.arg - other
  46.  
  47.     
  48.     def __rsub__(self, other):
  49.         return other - self.arg
  50.  
  51.     
  52.     def __mul__(self, other):
  53.         return self.arg * other
  54.  
  55.     
  56.     def __rmul__(self, other):
  57.         return other * self.arg
  58.  
  59.     
  60.     def __div__(self, other):
  61.         return self.arg / other
  62.  
  63.     
  64.     def __rdiv__(self, other):
  65.         return other / self.arg
  66.  
  67.     
  68.     def __pow__(self, other):
  69.         return self.arg ** other
  70.  
  71.     
  72.     def __rpow__(self, other):
  73.         return other ** self.arg
  74.  
  75.     
  76.     def __mod__(self, other):
  77.         return self.arg % other
  78.  
  79.     
  80.     def __rmod__(self, other):
  81.         return other % self.arg
  82.  
  83.     
  84.     def __cmp__(self, other):
  85.         return cmp(self.arg, other)
  86.  
  87.  
  88. candidates = [
  89.     2,
  90.     4.0,
  91.     0x2L,
  92.     2 + (0.0+0.0j),
  93.     [
  94.         1],
  95.     (2,),
  96.     None,
  97.     MethodNumber(2),
  98.     CoerceNumber(2)]
  99. infix_binops = [
  100.     '+',
  101.     '-',
  102.     '*',
  103.     '/',
  104.     '**',
  105.     '%']
  106. prefix_binops = [
  107.     'divmod']
  108.  
  109. def format_float(value):
  110.     if abs(value) < 0.01:
  111.         return '0.0'
  112.     else:
  113.         return '%.1f' % value
  114.  
  115.  
  116. def format_result(value):
  117.     if isinstance(value, complex):
  118.         return '(%s + %sj)' % (format_float(value.real), format_float(value.imag))
  119.     elif isinstance(value, float):
  120.         return format_float(value)
  121.     
  122.     return str(value)
  123.  
  124.  
  125. def do_infix_binops():
  126.     for a in candidates:
  127.         for b in candidates:
  128.             for op in infix_binops:
  129.                 print '%s %s %s' % (a, op, b),
  130.                 
  131.                 try:
  132.                     x = eval('a %s b' % op)
  133.                 except:
  134.                     error = sys.exc_info()[:2]
  135.                     print '... %s' % error[0]
  136.  
  137.                 print '=', format_result(x)
  138.                 
  139.                 try:
  140.                     z = copy.copy(a)
  141.                 except copy.Error:
  142.                     z = a
  143.  
  144.                 print '%s %s= %s' % (a, op, b),
  145.                 
  146.                 try:
  147.                     exec 'z %s= b' % op
  148.                 except:
  149.                     error = sys.exc_info()[:2]
  150.                     print '... %s' % error[0]
  151.                     continue
  152.  
  153.                 print '=>', format_result(z)
  154.             
  155.         
  156.     
  157.  
  158.  
  159. def do_prefix_binops():
  160.     for a in candidates:
  161.         for b in candidates:
  162.             for op in prefix_binops:
  163.                 print '%s(%s, %s)' % (op, a, b),
  164.                 
  165.                 try:
  166.                     x = eval('%s(a, b)' % op)
  167.                 except:
  168.                     error = sys.exc_info()[:2]
  169.                     print '... %s' % error[0]
  170.                     continue
  171.  
  172.                 print '=', format_result(x)
  173.             
  174.         
  175.     
  176.  
  177. warnings.filterwarnings('ignore', 'complex divmod\\(\\), // and % are deprecated', DeprecationWarning, 'test.test_coercion$')
  178. do_infix_binops()
  179. do_prefix_binops()
  180.